package com.codefish.framework.spring.beans.factory.config;

import com.codefish.framework.spring.beans.exception.BeansException;
import com.codefish.framework.spring.beans.factory.IListableBeanFactory;
import com.codefish.framework.spring.beans.factory.support.BeanDefinition;

/**
 * 实现配置BeanFactory的接口
 *
 * @author <a href='https://gitee.com/hzf2281'>codefish</a>
 * @version 1.0.0
 * @since 2022/10/03 下午 01:42
 */
public interface IConfigurableListableBeanFactory extends IListableBeanFactory, IConfigurableBeanFactory, IAutowireCapableBeanFactory {
    /**
     * 获得指定的BeanDefinition
     *
     * @param beanName beanName
     * @return beanName对应的BeanDefinition
     */
    BeanDefinition getBeanDefinition(String beanName);


    /**
     * 预先实例化所有单例的且非lazy-int的bean
     *
     * @throws BeansException 出现异常时抛出
     */
    void preInstantiateSingletons() throws BeansException;

}
